
package com.x52im.rbchat.logic.search.viewholder;

import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.x52im.rbchat.R;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;

/**
 * 搜索结果RecycleView的item对应的viewHolder对象根类。
 *
 * @author JackJiang
 * @since 8.2
 */
public abstract class AbstractViewHolder<R> extends RecyclerView.ViewHolder {

    /** 列表在所在的fragment对象引用 */
    protected Fragment fragment;

    /** item上的标题显示组件 */
    protected TextView tvCatlog;
    /** 用户头像组件 */
    protected ImageView ivAvatar;
    /** 昵称显示组件 */
    protected TextView tvName;
    /** 更多信息显示组件 */
    protected TextView tvMoreDesc;

    /**
     * 构造方法。
     *
     * @param fragment 列表在所在的fragment对象引用
     * @param itemView 列表item对应的view父布局引用
     */
    public AbstractViewHolder(Fragment fragment, View itemView) {
        super(itemView);
        this.fragment = fragment;

        this.tvCatlog = itemView.findViewById(com.x52im.rbchat.R.id.search_result_item_categoryView);
        this.ivAvatar = itemView.findViewById(com.x52im.rbchat.R.id.search_result_item_avatarView);
        this.tvName = itemView.findViewById(com.x52im.rbchat.R.id.search_result_item_nameView);
        this.tvMoreDesc = itemView.findViewById(com.x52im.rbchat.R.id.search_result_item_moreInfoView);
    }

    /**
     * 用于RecycleView的adapter中的onBindViewHolder方法。
     *
     * @param keyword    本次搜索的关键字（用于ui显示时的高亮显示）
     * @param r          列表item对应的数据对象引用
     * @param showCatlog 是否显示item上方的标题文本（true表示显示，否则不显示）
     */
    public abstract void onBind(String keyword, R r, boolean showCatlog);
}
